package cc.customer.web.util;

import cc.customer.aiEmport.damain.CAiEmp;
import cc.customer.aiEmport.damain.CAiEmpImport;
import cc.customer.bigEmport.damain.EprRecords;
import cc.customer.common.domain.ResponseBo;
import cc.customer.common.utils.DateUtil;
import cc.customer.common.utils.FebsUtil;
import cc.customer.common.utils.Utils;
import cc.customer.common.utils.poi.POIUtils;
import com.alibaba.excel.EasyExcel;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.util.*;

/**
 * Description: customer
 * Created by yhsh on 2020/3/24 10:55
 * version 2.0
 * 方法说明
 */
public class AIReadExcel {

	//读取大名单初始数据
	public static Map<String,Object> createExcel(String fileUrl, String batch, String bpResType, String uuid, String bpDretor) {
		List<CAiEmp> list = new ArrayList<>();
		Map<String,Object> map = new HashMap<>();
		try {
//			File file = new File(fileUrl);
//			Workbook rwb= new XSSFWorkbook(new FileInputStream(file));
//			Sheet sheet = rwb.getSheetAt(0);
//			int rows = sheet.getLastRowNum();//获取所有得行
			System.out.println("开始");
			List<CAiEmpImport> istall = new ArrayList<>();
			List<EprRecords> errorlist = new ArrayList<>();
			EasyExcel.read(fileUrl, CAiEmpImport.class, new ExcelListener(istall)).sheet().doRead();

			if(istall.size()<1){
				return map;
			}
			for (CAiEmpImport cAiEmpImport:istall) {
				CAiEmp bigEmp = null;
				EprRecords  records = null;
				records = checkAndDownLoadError(cAiEmpImport,batch);

				//错误集合
				if(null!=records){
					errorlist.add(records);
				}else{
					bigEmp = new CAiEmp();
					bigEmp.setAiName(cAiEmpImport.getCustomer().trim());
					//获取手机号
					bigEmp.setAiMobile(cAiEmpImport.getMobile());
					//地区
					bigEmp.setAiZone(cAiEmpImport.getZone().trim());
					//意向等级
					bigEmp.setAiGroud(cAiEmpImport.getGroup().trim());
					//所属批次
					bigEmp.setAiBatch(batch);
					bigEmp.setAiDirector(bpDretor);
					bigEmp.setAiUuid(uuid);
					bigEmp.setAiRUuid(Utils.getUUID());
					bigEmp.setAiStage("1");
					bigEmp.setAiCreatetime(DateUtil.getCurrentDate("yyyy-MM-dd HH:mm:ss"));
					//资源类型
					bigEmp.setAiResType(bpResType);
					bigEmp.setAiIsdelete("0");
					list.add(bigEmp);
				}
			}
			map.put("list",list);
			map.put("errorList",errorlist);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return map;
	}



	private static EprRecords checkAndDownLoadError(CAiEmpImport ai,String batch){
		Boolean flag = false;
		EprRecords aiEmp = null;
		String reson = "";
		try {
			if(null==ai.getCustomer()||StringUtils.isEmpty(ai.getCustomer()+"")){
				flag = true;
				reson = "客户名称为空";
			}

			//获取手机号
			if (ai.getMobile()!=null){
				String opone = ai.getMobile();
				if (!StringUtils.isEmpty(opone)&& FebsUtil.isPhoneNo(opone)){
					//bigEmp.setBpMobile(opone);
				}else{
					reson = "客户手机号不符合规则";
					flag = true;
				}
			}else{
				reson = "客户手机号为空";
				flag = true;
			}
			if(flag){
				aiEmp = new EprRecords();
				aiEmp.setcEprBatch(batch);
				if(null!=ai.getCustomer()){
					aiEmp.setcEprUser(ai.getCustomer().trim());
				}
				//获取手机号
				if(null!=ai.getMobile()){
					aiEmp.setcEprPhone(ai.getMobile());
				}

				//地区
				aiEmp.setcEprZone(ai.getZone().trim());

				//意向等级
				aiEmp.setcEprDeng(ai.getGroup().trim());

				aiEmp.setcEprReson(reson);
				aiEmp.setcEprTime(new Date());
			}

		}catch (Exception e){
			e.printStackTrace();
		}
		return aiEmp;
	}

	public static ResponseBo checkExcel(String fileUrl) {
		Boolean isCheck = false;
		int num = 0;
		String  retuanMsg = "";
		try {
			System.out.println("开始");
			List<CAiEmpImport> istall = new ArrayList<>();
			EasyExcel.read(fileUrl, CAiEmpImport.class, new ExcelListener(istall)).sheet().doRead();

			System.out.println(istall.toString());
//			File file = new File(fileUrl);
//			Workbook rwb= new XSSFWorkbook(new FileInputStream(file));
//			Sheet sheet = rwb.getSheetAt(0);
//			int rows = sheet.getLastRowNum();//获取所有得行
//			if (rows<=0 || rows >3000){
//				return ResponseBo.error("导入数据为空或者导入超过3000行");
//			}
//			Set<String> allPhone = new HashSet<>();
//			for (int i = 1; i <= rows; i++) {
//				num++;
//				CAiEmp bigEmp = new CAiEmp();
//				Row row = sheet.getRow(i);
//				//获取客户名称
//				Cell bpName = row.getCell(0);
//				if (bpName!=null){
//					String name =  bpName.getStringCellValue();
//					if (!StringUtils.isEmpty(name)){
//						bigEmp.setAiName(name);
//					}
//				}else{
//					isCheck = true;
//					retuanMsg = "客户名称不能为空";
//					break;
//				}
//				//获取手机号
//				Cell bpPhone = row.getCell(1);
//				if (bpPhone!=null){
//					String opone =   POIUtils.getCellValue(bpPhone);
//					if (!StringUtils.isEmpty(opone)&& FebsUtil.isPhoneNo(opone)){
//						bigEmp.setAiMobile(opone);
//					}else{
//						isCheck = true;
//						retuanMsg = "手机号不能为空或者手机号格式不对";
//						break;
//					}
//					//验证是否存在存在相同的手机号数据
//					allPhone.add(opone);
//				}else{
//					isCheck = true;
//					retuanMsg = "手机号不能为空或者手机号格式不对";
//					break;
//				}
//			}
//			//验证是不是存在不是手机号或者 手机号不正确的数据
//			if (isCheck){
//				return ResponseBo.error("验证失败：第 "+num+" 条数据不正确,原因:"+retuanMsg);
//			}
//			//验证这个批次 有相同的数据的吗
//			if (rows!= allPhone.size()){
//				return ResponseBo.error("验证失败：批次中 存在手机号相同的数据");
//			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return ResponseBo.ok("验证成功");
	}
}
